home *** CD-ROM | disk | FTP | other *** search
/ Crosscountry USA Photo Safari / Crosscountry USA Photo Safari.iso / Data / cc_base / pak00_16bit_f.pk3 / anim / flicker / chk_flickers.pl
Perl Script  |  2003-11-21  |  3KB  |  129 lines

  1. #!/usr/bin/perl
  2.  
  3. # this has been fixed to look for missing .anm.p files
  4. # Ryan 2003/11/21
  5.  
  6. use strict;
  7.  
  8. use IO::Dir;
  9. use IO::File;
  10.  
  11. main();
  12. exit;
  13.  
  14. sub main {
  15.   my $dir = IO::Dir->new('.');
  16.  
  17.   if (!$dir) {
  18.     die "Huh?? can't open '.' to get a directory listing!\nError: $!\n";
  19.   }
  20.  
  21.   my $dir_entry;
  22.  
  23.   while ($dir_entry = $dir->read) {
  24.     next if $dir_entry =~ /^\.\.?$/;
  25.     next if $dir_entry =~ /^CVS/i;
  26.     next if ! -d $dir_entry;
  27.     verify_flickers($dir_entry);
  28.   }
  29.  
  30.   $dir->close;
  31.  
  32.   print "Hit enter to exit\n";
  33.   <stdin>;
  34. }
  35.  
  36. sub verify_flickers {
  37.   my ($dirname) = @_;
  38.  
  39.   my $flicker_dir = IO::Dir->new($dirname);
  40.  
  41.   if (!$flicker_dir) {
  42.     print "Huh?? can't open '$dirname' to get a directory listing!\nError:$!\n";
  43.     return;
  44.   }
  45.  
  46.   my $dir_entry;
  47.   my %codes = (
  48.     'rds' => '',
  49.     'rdw' => '',
  50.     'rns' => '',
  51.     'rnw' => '',
  52.     'lds' => '',
  53.     'ldw' => '',
  54.     'lns' => '',
  55.     'lnw' => '',
  56.   );
  57.   my %sizes = (
  58.     'rds' => 0,
  59.     'rdw' => 0,
  60.     'rns' => 0,
  61.     'rnw' => 0,
  62.     'lds' => 0,
  63.     'ldw' => 0,
  64.     'lns' => 0,
  65.     'lnw' => 0,
  66.    );
  67.  
  68.   print "$dirname\n";
  69.   while ($dir_entry = $flicker_dir->read) {
  70.     next if $dir_entry =~ /^\.\.?$/;
  71.     next if -d $dir_entry;
  72.     
  73.     if ($dir_entry =~ /${dirname}_(...)/) {
  74.       my $code = $1;
  75.       $codes{$code} = $dir_entry;
  76.       if ($dir_entry =~ /\.pcx$/) {
  77.         $sizes{$code} += -s "$dirname/$dir_entry";
  78.       }
  79.     }
  80.   }
  81.  
  82.   for my $code (sort keys %codes) {
  83.     if ($codes{$code} eq '') {
  84.       print "\t", $code, " missing\n";
  85.     } else {
  86.       print "\t", $code, " found (" . $sizes{$code} . " bytes)";
  87.  
  88.       # its an alias, find out what to
  89.       if ($codes{$code} =~ /\.a$/i) {
  90.         print " (alias to: ";
  91.         my $fh = IO::File->new($dirname . '/' . $codes{$code});
  92.         if (!defined($fh)) {
  93.           print "??";
  94.         } else {
  95.           my $filename = <$fh>;
  96.           chomp($filename);
  97.           print $filename; # print the file its aliased too
  98.           $fh->close;
  99.         }
  100.         print ")";
  101.  
  102.       # not an alias
  103.       } else {
  104.         $codes{$code} =~ s/\.pcx$//gi;
  105.         $codes{$code} =~ s/\.jpg$//gi;
  106.         $codes{$code} =~ s/\.an1$//gi;
  107.         $codes{$code} =~ s/\.an2$//gi;
  108.         $codes{$code} =~ s/\.anm.p$//gi;
  109.         $codes{$code} =~ s/_[0-9]+//gi;
  110.         my $prop_name = $dirname . '/' . $codes{$code} . ".anm.p";
  111.         if (! (-e $prop_name) ) {
  112.           print " $prop_name missing";
  113.           # create the missing .anm.p file here
  114.           my $fh = IO::File->new($prop_name, "w");
  115.           $fh->print("{}");
  116.           $fh->close;
  117.         }
  118.       }
  119.       print "\n";
  120.     }
  121.   }
  122.  
  123.   #all done with this flicker dir
  124.   $flicker_dir->close;
  125. }
  126.  
  127.  
  128. __END__
  129.